entry completion: Make keynav work again
authorMatthias Clasen <mclasen@redhat.com>
Mon, 22 Jun 2020 16:48:42 +0000 (12:48 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 22 Jun 2020 16:48:42 +0000 (12:48 -0400)
Use gtk_widget_prepend_controller to supersede entry keynav
while the popup is open. This fixes selecting completions
with the keyboard - the Enter keypress was ending up
triggering GtkText::activate instead of inserting the
selected completion into the entry.

gtk/gtkentrycompletion.c

index 8fdc9d07394c8dbe450453b3ab335ac60f230996..d2f849a2133548c3e9144d152b9e2065e9d4dfc4 100644 (file)
@@ -2338,7 +2338,7 @@ connect_completion_signals (GtkEntryCompletion *completion)
   gtk_event_controller_set_name (controller, "gtk-entry-completion");
   g_signal_connect (controller, "key-pressed",
                     G_CALLBACK (gtk_entry_completion_key_pressed), completion);
-  gtk_widget_add_controller (GTK_WIDGET (text), controller);
+  gtk_widget_prepend_controller (GTK_WIDGET (text), controller);
   controller = priv->entry_focus_controller = gtk_event_controller_focus_new ();
   gtk_event_controller_set_name (controller, "gtk-entry-completion");
   g_signal_connect_swapped (controller, "leave", G_CALLBACK (text_focus_out), completion);